<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>重复请求问题</title>
  </head>
  <body>
    <button>发送请求</button>

    <script>
      const btns = document.querySelectorAll("button");
      let xhr = null;
      // 标识变量 通过boolean确认是否正在发送ajax请求
      let isSending = false;

      btns[0].onclick = function () {
        // 判断标识变量,如果正在发送请求，则取消上一个请求，开始新的请求
        if (isSending) xhr.abort();
        xhr = new XMLHttpRequest();
        // 修改标识比例值
        isSending = true;
        xhr.open("GET", "http://127.0.0.1:8080/delay");
        xhr.send();
        xhr.onreadystatechange = function () {
          // 判断服务器返回所有结果
          if (xhr.readyState === 4) {
            // 修改标识变量
            isSending = false;
          }
        };
      };

      //   abort
      btns[1].onclick = function () {
        xhr.abort();
      };
    </script>
  </body>
</html>
